
package com.trial.area.permission.dao;

import java.util.List;

import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Repository;

import com.trial.area.common.dao.BaseDao;
import com.trial.area.permission.entity.AdminUserVO;
import com.trial.area.permission.entity.RoleVO;
import com.trial.area.permission.entity.UserRoleVO;
import com.trial.area.permission.param.UserRoleParam;

/**
 * 用户角色关系Dao实现类
 *
 * @author 朱国军
 * @version 2016年03月23日 朱国军
 */
@Repository("userRoleDao")
public class UserRoleDao extends BaseDao<UserRoleVO> {
    
    /**
     * 新增，注：返回的添加的条数，获取主键用entity.getId();
     *
     * @param entity 要增加的用户角色关系对象
     * @return 返回新增的条数
     */
    public Integer insert(UserRoleVO entity) {
        return this.getSqlSession().insert("insertUserRole", entity);
    }
    
    /**
     * 按查询条件查询用户角色
     *
     * @param param 用户角色关系查询条件
     * @return 用户角色关系列表
     */
    public List<RoleVO> queryUserRoleList(UserRoleParam userRoleParam) {
    	this.pareParamter("selectUserRoleList", userRoleParam);
        return this.getSqlSession().selectList("selectUserRoleList", userRoleParam);
    }
    
    /**
     * 按查询条件查询角色分配的用户
     *
     * @param param 用户角色关系查询条件
     * @return 用户角色关系列表
     */
    public List<AdminUserVO> queryRoleUserList(UserRoleParam userRoleParam) {
    	this.pareParamter("selectRoleUserList", userRoleParam);
        return this.getSqlSession().selectList("selectRoleUserList", userRoleParam);
    }

    /**
     * 根据ID删除用户角色关系
     *
     * @param id 主键
     */
    public Integer deleteUserRole(String adminUserId, String roleId, String userRoleId) {
        if (StringUtils.isBlank(adminUserId) && StringUtils.isBlank(roleId) && StringUtils.isBlank(userRoleId)) {
            throw new RuntimeException("删除用户角色关系时，用户ID，角色ID，用户角色关系ID不能都为空");
        }

        UserRoleParam param = new UserRoleParam();
        param.setAdminUserId(adminUserId);
        param.setUserRoleId(userRoleId);
        param.setRoleId(userRoleId);
        return this.getSqlSession().delete("deleteUserRole", param);
    }
}
